package com.efast.cafe.portal.dao.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import com.efast.cafe.portal.bean.api.ApiRequestUriBean;
import com.efast.cafe.portal.bean.api.ApiRequestUriQueryBean;
import com.efast.cafe.portal.entity.api.ApiRequestUri;


/**
 * <p>接口</p>
 * <p>Table: api_request_uri - 请求uri路径</p>
 *
 * @since ${.now}
 */

public interface ApiRequestUriDao {

	/**
	 * 查询uri当前分页数据
	 * @param queryBean
	 * @return
	 */
	List<ApiRequestUriBean> queryPageList(ApiRequestUriQueryBean queryBean);

	/**
	 * 查询uri当前分页数据总量
	 * @param queryBean
	 * @return
	 */
	Integer queryPageCount(ApiRequestUriQueryBean queryBean);

	
    /**
     * 根据系统systemId,模块moduleId，路径uriId查询uri详情
     * @param systemId
     * @param moduleId
     * @param uriId
     * @return
     */
	ApiRequestUriBean getUriDetail(@Param("systemId")Integer systemId,@Param("moduleId")Integer moduleId,@Param("uriId")Integer uriId);

	/**
	 * 新增uri
	 * @param apiRequestUri
	 * @return
	 */

	Integer saveUri(ApiRequestUriBean apiRequestUri);

	/**
	 * 编辑uri
	 * @param apiRequestUri
	 * @return
	 */
	void editUri(ApiRequestUriBean apiRequestUri);

	/**
	 * 通过url查询uri详细信息
	 * @param systemPath
	 * @param moduleUri
	 * @param pathUri
	 * @param systemVersion
	 * @return
	 */
	ApiRequestUriBean searchByUrl(@Param("systemPath")String systemPath, @Param("moduleUri")String moduleUri,@Param("pathUri")String pathUri,@Param("systemVersion")String systemVersion);

	/**
	 * 通过ID删除uri
	 * @param uriId
	 */
	void deleteUri(@Param("uriId")Integer uriId);

	/**
	 * 校验uri在当前模块下唯一
	 * @param apiRequestUri
	 * @return
	 */
	Integer checkUriIsExist(ApiRequestUriBean apiRequestUri);
	
	

	/**
	 * 通过完整url查询请求路径 列表
	 * @param queryBean
	 * @return
	 */
	List<ApiRequestUriBean> urlPageList(ApiRequestUriQueryBean queryBean);

	/**
	 * 通过完整url查询请求路径分页数量
	 * @param queryBean
	 * @return
	 */
	Integer urlPageCount(ApiRequestUriQueryBean queryBean);

	/**
	 *模块状态的变更导致模块所属uri的状态变更
	 * @param moduleId
	 * @param moduleStatus
	 * @Date 2017-4-25
	 */
	public void statusChangedByModuleStatus(ApiRequestUriBean apiRequestUriBean);   
	/**
	 * 批量复制uri,并返回主键
	 * @param apiRequestUriList
	 */
	public void copyUrilist(List<ApiRequestUriBean> apiRequestUriBeanList);
}